package com.aijk.commons.utils;

import org.apache.commons.lang3.time.DateFormatUtils;
import org.apache.commons.lang3.time.DateUtils;

import java.text.ParseException;
import java.util.Date;

/**
 * Created by ChenDeWei on 2016/6/16.
 */
public class DateUtilsExt extends DateUtils {

    private static String format = "yyyy-MM-dd";

    /**
     * 获取当前日期 时间为 00:00:00
     *
     * @return
     */
    public static Date getTodayDate() {
        return getOnlyDateAdd(new Date(), 0, format);
    }

    /**
     * 获取当前日期 时间为 00:00:00
     * * @param amount  the amount to add, may be negative
     *
     * @return
     */
    public static Date getOnlyDateAdd(int amount) {
        return getOnlyDate(addDays(new Date(), amount), format);
    }

    /**
     * 获取当前日期 时间为 00:00:00
     * * @param amount  the amount to add, may be negative
     *
     * @return
     */
    public static Date getOnlyDateAdd(Date date, int amount) {
        return getOnlyDate(addDays(date, amount), format);
    }

    /**
     * 获取当前日期 时间为 00:00:00
     * * @param amount  the amount to add, may be negative
     *
     * @return
     */
    public static Date getOnlyDateAdd(Date date, int amount, String format) {
        return getOnlyDate(addDays(date, amount), format);
    }

    /**
     * 截取日期后面的时间
     *
     * @return
     */
    public static Date getOnlyDate(Date date, String format) {
        try {
            return parseDate(DateFormatUtils.format(date, format), format);
        } catch (ParseException e) {
        }
        return null;
    }

    /**
     * 将日期类似的字符串 进行格式化
     *
     * @param dateStr      日期字符串
     * @param sourceFormat 原字符串日期格式
     * @param targetFormat 目标字符串日期格式
     * @return
     * @throws ParseException
     */
    public static String format(String dateStr, String sourceFormat, String targetFormat) throws ParseException {
        return DateFormatUtils.format(parseDate(dateStr, sourceFormat), targetFormat);
    }
}
